#ifndef __BSP_TEMP_ALGORITHM_H
#define __BSP_TEMP_ALGORITHM_H
  
#include "gpio.h"
#include "adc.h"
#include "math.h"
#include "bsp_control.h"
#include "led.h"
#include "bsp.h"

/*响应时间控制时间参考*/
/*				下限报警温度(54)		中间值62（A1：60）			上限报警温度(70)					S类国标下限报警时间						国标上限报警时间
1°C/min		  		30min30s,				 37min15s,					45min								29min									46.00	
3°C/min		  		10min30s,				 12min45s,					15min								9min40s									16min							
5°C/min		  		6min36,					 7min36s,					9min								5min48s									10min
10°C/min			3min24s,				 4min12s,				  	5min								2min54									5min30s
20°C/min			2min,					 2min15s,					2min30s								1min27									3min13s
30°C/min			1min30s,				 1min45s,				  	2min								58s										2min25s
*/

/*R型模式启动*/
//#define TEMP_R

/*EEPROM数据地址*/
/*NULL*/
#define EEPROM_ADDRESS													0x96u
#define EEPROM_LEN															
/*温度报警值*/
#define TEMP_ALARM_LEN 													  2
#define TEMP_ALARM_ADDRESS 												0x97u
/*温度预警值*/
#define TEMP_PREPARE_ALARM_LEN											2
#define TEMP_PREPARE_ALARM_ADDRESS										0x99u
/*硬件放大倍数*/
#define TEMP_ALGORITHM_CALIBRATION_LEN									4
#define TEMP_ALGORITHM_CALIBRATION_ADDRESS								0x100u
/*阈值复位控制位*/
#define  TEMP_ALARM_RESET_LEN											1
#define	 TEMP_ALARM_RESET_ADDRESS										0x104u
/*温度模式控制位*/
#define TEMP_MODLE_LEN													1
#define TEMP_MODLE_ADDRESS												0x105u
/*温度标定模式控制位*/
#define TEMP_CALIBRETION_MODLE_LEN										1
#define TEMP_CALIBRETION_MODLE_ADDRESS									0x106u

/*温度启动模式*/
#define TEMP_CALIBRATION_MODLE			0x31
/*国标普通模式*/
#define TEMP_MODLE_A1					0x01 //0
#define TEMP_MODLE_A2					0x02//1
#define TEMP_MODLE_B				    0x03
#define TEMP_MODLE_C					0x04
#define TEMP_MODLE_D					0x05
#define TEMP_MODLE_E					0x06
#define TEMP_MODLE_F					0x07
#define TEMP_MODLE_G					0x08
/*国标S模式*/
#define TEMP_MODLE_A1S					0x11 //16
#define TEMP_MODLE_A2S					0x12//17
#define TEMP_MODLE_BS					0x13
#define TEMP_MODLE_CS					0x14
#define TEMP_MODLE_DS					0x15
#define TEMP_MODLE_ES					0x16
#define TEMP_MODLE_FS					0x17
#define TEMP_MODLE_GS					0x18
/*国标R模式*/
#define TEMP_MODLE_A1R					0x21 //32
#define TEMP_MODLE_A2R					0x22//33
#define TEMP_MODLE_BR					0x23
#define TEMP_MODLE_CR					0x24
#define TEMP_MODLE_DR					0x25
#define TEMP_MODLE_ER					0x26
#define TEMP_MODLE_FR					0x27
#define TEMP_MODLE_GR					0x28
/*博康模式1类*/
#define BK_A1							0x0a			
#define BK_B1							0x0b
#define BK_C1							0x0c
#define BK_D1							0x0d
#define BK_E1							0x0e
#define BK_F1							0x0f
#define BK_G1							0x1a
#define BK_H1							0x1b
#define BK_I1							0x1c
#define BK_J1							0x1d
#define BK_K1							0x1e
#define BK_L1							0x1f
#define BK_M1							0x2a
#define BK_N1							0x2b
#define BK_O1							0x2c
#define BK_P1							0x2d
#define BK_Q1							0x2e
#define BK_R1							0x2f
#define BK_S1							0x30
/*博康模式2类*/
#define BK_A2							0x32
#define BK_B2							0x33
#define BK_C2							0x34
#define BK_D2							0x35
#define BK_E2							0x36
#define BK_F2							0x37
#define BK_G2							0x38
#define BK_H2							0x39
#define BK_I2							0x3a
#define BK_J2							0x3b
#define BK_K2							0x3c
#define BK_L2							0x3d
#define BK_CM							0x3e
#define BK_AI							0x3f
/*博康模式2类报警值*/
#define BK_A2_ALARM					60
#define BK_A2_PREPARE_ALARM			50
#define BK_B2_ALARM					71
#define BK_B2_PREPARE_ALARM			61
#define BK_C2_ALARM					88
#define BK_C2_PREPARE_ALARM			78
#define BK_D2_ALARM					99
#define BK_D2_PREPARE_ALARM			89
#define BK_E2_ALARM					107
#define BK_E2_PREPARE_ALARM			97
#define BK_F2_ALARM					135
#define BK_F2_PREPARE_ALARM			125
#define BK_G2_ALARM					163
#define BK_G2_PREPARE_ALARM			153
#define BK_H2_ALARM					182
#define BK_H2_PREPARE_ALARM			172
#define BK_I2_ALARM					232
#define BK_I2_PREPARE_ALARM			222
#define BK_J2_ALARM					260
#define BK_J2_PREPARE_ALARM			250
#define BK_K2_ALARM					316
#define BK_K2_PREPARE_ALARM			306
#define BK_L2_ALARM					385
#define BK_L2_PREPARE_ALARM			375

/*热敏硬件参数*/  
#define NTC_B							4267.00
#define NTC_R							100000.00
#define NTC_T2							(NTC_K+25.00)				
#define NTC_K							273.15

#ifdef PT100
	/*PT100电阻*/
	#define PT_A							3.9083e-3
	#define PT_B							-5.775e-7
	#define PT_C							-4.183e-12
	/*0度时，PT电阻的阻值*/
	#define PT_R							100.00	
	
	#ifdef LCCS_MODLE
		#define HARDWARE_B    					17.4641037f
		#define CONSTANT_FLOW_SOURCE		0.0005294f
	#else 
		/*硬件放大倍数*/
		#define HARDWARE_B    17.4861431f
		/*恒流源数值*/
		#define CONSTANT_FLOW_SOURCE	0.001f
	#endif
	
#elif defined(PT1000)
	/*PT100电阻*/
	#define PT_A							3.9083e-3
	#define PT_B							-5.775e-7
	#define PT_C							-4.183e-12
	/*0度时，PT电阻的阻值*/
	#define PT_R							1000.00	
	#ifdef LCCS_MODLE
		#define HARDWARE_B    					4.00f						//硬件放大倍数
		#define CONSTANT_FLOW_SOURCE		0.00025f				//恒流电流数据
	#endif
#endif

//#define HARDWARE_B
/*正常升温速率*/
#define TEMP_SPEED_MODLE_0					0
#define TEMP_SPEED_MODLE_1					1
#define TEMP_SPEED_MODLE_2					2
#define TEMP_SPEED_MODLE_3					3
#define TEMP_SPEED_MODLE_4					4
#define TEMP_SPEED_MODLE_5					5
#define TEMP_SPEED_MODLE_6					6
#define TEMP_SPEED_MODLE_N					8	
/*低温模式升温速率*/
#define TEMP_LOW_SPEED_MODLE_0				0x10u				
#define TEMP_LOW_SPEED_MODLE_1				0x11u	
#define TEMP_LOW_SPEED_MODLE_2				0x12u
#define TEMP_LOW_SPEED_MODLE_3				0x13u
	
/*补偿曲线起点*/
#define TEMP_START									25.00
/*补偿曲线末端*/
#define TEMP_END									75.00
/*报警最小阈值*/
#define TEMP_ALARM_MIN								54.00
/*报警最大阈值*/
#define TEMP_ALARM_MAX								70.00
/*默认报警值*/
#define TEMP_ALARM									62.00
/*默认预警值*/	
#define TEMP_PREPARE_ALARM 							52.00	

#ifdef JTW_HD_BK500_427	
/**************************************************
棒状 427mm
***************************************************/
/*模式判断范围*/	
/*模式1*/
#define TEMP_1_MODLE_RANGE_S					0
#define TEMP_1_MODLE_RANGE_E					1.5
/*模式1、2过渡*/
#define TEMP_1_2_MODLE_RANGE_S					1.5
#define TEMP_1_2_MODLE_RANGE_E					2.0
/*模式2*/
#define TEMP_2_MODLE_RANGE_S					2.0
#define TEMP_2_MODLE_RANGE_E					3.5
/*模式2、3过渡*/
#define TEMP_2_3_MODLE_RANGE_S					3.5
#define TEMP_2_3_MODLE_RANGE_E					4.5
/*模式3*/
#define TEMP_3_MODLE_RANGE_S					4.5
#define TEMP_3_MODLE_RANGE_E					5.5
/*模式3、4过渡*/
#define TEMP_3_4_MODLE_RANGE_S					5.5
#define TEMP_3_4_MODLE_RANGE_E					6.2
/*模式4*/
#define TEMP_4_MODLE_RANGE_S					6.2
#define TEMP_4_MODLE_RANGE_E					7.6
/*模式4、5过渡*/
#define TEMP_4_5_MODLE_RANGE_S					7.6
#define TEMP_4_5_MODLE_RANGE_E					8.9
/*模式5*/
#define TEMP_5_MODLE_RANGE_S					8.9
#define TEMP_5_MODLE_RANGE_E					10.7
/*模式5、6过渡*/
#define TEMP_5_6_MODLE_RANGE_S					10.7
#define TEMP_5_6_MODLE_RANGE_E					11.00
/*模式6*/
#define TEMP_6_MODLE_RANGE_S					11.00
#if SHYS_CONFIG_OUTSIDE
	#define TEMP_6_MODLE_RANGE_E					27.00
#else 
	#define TEMP_6_MODLE_RANGE_E					20.00
#endif
/*
注意！！！！请输入浮点数。
普通升温模式
*/
/*模式1：1度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_1_ALARM_SOURCE_MAX				67.60	
/*报警温度下限时的单元实际温度*/		
#define TEMP_1_ALARM_SOURCE_MIN				54.00
/*模式2：3度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_2_ALARM_SOURCE_MAX				62.00
/*报警温度下限时的单元实际温度*/
#define TEMP_2_ALARM_SOURCE_MIN				49.00 
/*模式3：5度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_3_ALARM_SOURCE_MAX				57.00
/*报警温度下限时的单元实际温度*/
#define TEMP_3_ALARM_SOURCE_MIN				46.50
/*模式4：10度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_4_ALARM_SOURCE_MAX				53.50
/*报警温度下限时的单元实际温度*/
#define TEMP_4_ALARM_SOURCE_MIN				39.80
/*模式5：20度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_5_ALARM_SOURCE_MAX				41.50
/*报警温度下限时的单元实际温度*/
#define TEMP_5_ALARM_SOURCE_MIN				36.00
/*模式6：30度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_6_ALARM_SOURCE_MAX				41.00
/*报警温度下限时的单元实际温度*/
#define TEMP_6_ALARM_SOURCE_MIN				34.50

/*差温模式*/
#ifdef TEMP_R
/*低温补偿起点*/
#define TEMP_LOW_START							5
/*低温补偿终点*/
#define TEMP_LOW_END								55
/*模式1：低温10度升温*/
/*参数未适配*/
/*报警温度上限时的单元实际温度*/
#define TEMP_LOW_1_ALARM_SOURCE_MAX				50.00
/*报警温度下限时的单元实际温度*/
#define TEMP_LOW_1_ALARM_SOURCE_MIN				43.00
/*模式2：低温20度升温*/
/*报警温度上限时的单元实际温度*/
#define  TEMP_LOW_2_ALARM_SOURCE_MAX			38.00
/*报警温度下限时的单元实际温度*/
#define  TEMP_LOW_2_ALARM_SOURCE_MIN			33.00
/*模式3：低温30度升温*/
/*报警温度上限时的单元实际温度*/
#define  TEMP_LOW_3_ALARM_SOURCE_MAX			38.00
/*报警温度下限时的单元实际温度*/
#define  TEMP_LOW_3_ALARM_SOURCE_MIN			33.00
#endif	//TEMP_R
#elif JTW_HD_BK500_L
/**************************************************
缆式穿孔型 长0.5~10米
***************************************************/
/*模式判断范围*/	
/*模式1*/	
#define TEMP_1_MODLE_RANGE_S					0.00
#define TEMP_1_MODLE_RANGE_E					1.50
/*模式1、2过渡*/
#define TEMP_1_2_MODLE_RANGE_S					1.50
#define TEMP_1_2_MODLE_RANGE_E					2.50
/*模式2：3℃*/
#define TEMP_2_MODLE_RANGE_S					2.50
#define TEMP_2_MODLE_RANGE_E					3.80
/*模式2、3过渡*/
#define TEMP_2_3_MODLE_RANGE_S					3.80
#define TEMP_2_3_MODLE_RANGE_E					4.50
/*模式3：5℃*/
#define TEMP_3_MODLE_RANGE_S					4.50
#define TEMP_3_MODLE_RANGE_E					5.50
/*模式3、4过渡*/
#define TEMP_3_4_MODLE_RANGE_S					5.50
#define TEMP_3_4_MODLE_RANGE_E					6.20
/*模式4：10℃*/
#define TEMP_4_MODLE_RANGE_S					6.20
#define TEMP_4_MODLE_RANGE_E					9.20
/*模式4、5过渡*/
#define TEMP_4_5_MODLE_RANGE_S					9.20
#define TEMP_4_5_MODLE_RANGE_E					10.50
/*模式5：20℃*/
#define TEMP_5_MODLE_RANGE_S					10.50
#define TEMP_5_MODLE_RANGE_E					14.40
/*模式5、6过渡*/
#define TEMP_5_6_MODLE_RANGE_S					14.40
#define TEMP_5_6_MODLE_RANGE_E					15.50
/*模式6：30℃*/
#define TEMP_6_MODLE_RANGE_S					15.50
#define TEMP_6_MODLE_RANGE_E					22.00
/*
注意！！！！请输入浮点数。
普通升温模式
*/
/*模式1：1度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_1_ALARM_SOURCE_MAX				67.50	
/*报警温度下限时的单元实际温度*/		
#define TEMP_1_ALARM_SOURCE_MIN				54.00
/*模式2：3度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_2_ALARM_SOURCE_MAX				63.00
/*报警温度下限时的单元实际温度*/
#define TEMP_2_ALARM_SOURCE_MIN				51.00 
/*模式3：5度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_3_ALARM_SOURCE_MAX				60.00
/*报警温度下限时的单元实际温度*/
#define TEMP_3_ALARM_SOURCE_MIN				48.00
/*模式4：10度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_4_ALARM_SOURCE_MAX				58.50
/*报警温度下限时的单元实际温度*/
#define TEMP_4_ALARM_SOURCE_MIN				44.80
/*模式5：20度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_5_ALARM_SOURCE_MAX				48.50
/*报警温度下限时的单元实际温度*/
#define TEMP_5_ALARM_SOURCE_MIN				43.00
/*模式6：30度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_6_ALARM_SOURCE_MAX				48.00
/*报警温度下限时的单元实际温度*/
#define TEMP_6_ALARM_SOURCE_MIN				42.50

/*差温模式*/
#ifdef TEMP_R
/*低温补偿起点*/
#define TEMP_LOW_START							5
/*低温补偿终点*/
#define TEMP_LOW_END							55
/*模式1：低温10度升温*/
/*参数未适配*/
/*报警温度上限时的单元实际温度*/
#define TEMP_LOW_1_ALARM_SOURCE_MAX				50.00
/*报警温度下限时的单元实际温度*/
#define TEMP_LOW_1_ALARM_SOURCE_MIN				43.00
/*模式2：低温20度升温*/
/*报警温度上限时的单元实际温度*/
#define  TEMP_LOW_2_ALARM_SOURCE_MAX			38.00
/*报警温度下限时的单元实际温度*/
#define  TEMP_LOW_2_ALARM_SOURCE_MIN			33.00
/*模式3：低温30度升温*/
/*报警温度上限时的单元实际温度*/
#define  TEMP_LOW_3_ALARM_SOURCE_MAX			38.00
/*报警温度下限时的单元实际温度*/
#define  TEMP_LOW_3_ALARM_SOURCE_MIN			33.00
#endif	//TEMP_R

#elif JTW_HD_BK500
/**************************************************
一体式 
***************************************************/
/*模式判断范围*/	
/*模式1*/	
#define TEMP_1_MODLE_RANGE_S					0.00
#define TEMP_1_MODLE_RANGE_E					1.50
/*模式1、2过渡*/
#define TEMP_1_2_MODLE_RANGE_S					1.50
#define TEMP_1_2_MODLE_RANGE_E					2.50
/*模式2：3℃*/
#define TEMP_2_MODLE_RANGE_S					2.50
#define TEMP_2_MODLE_RANGE_E					3.80
/*模式2、3过渡*/
#define TEMP_2_3_MODLE_RANGE_S					3.80
#define TEMP_2_3_MODLE_RANGE_E					4.50
/*模式3：5℃*/
#define TEMP_3_MODLE_RANGE_S					4.50
#define TEMP_3_MODLE_RANGE_E					5.50
/*模式3、4过渡*/
#define TEMP_3_4_MODLE_RANGE_S					5.50
#define TEMP_3_4_MODLE_RANGE_E					6.20
/*模式4：10℃*/
#define TEMP_4_MODLE_RANGE_S					6.20
#define TEMP_4_MODLE_RANGE_E					9.20
/*模式4、5过渡*/
#define TEMP_4_5_MODLE_RANGE_S					9.20
#define TEMP_4_5_MODLE_RANGE_E					10.50
/*模式5：20℃*/
#define TEMP_5_MODLE_RANGE_S					10.50
#define TEMP_5_MODLE_RANGE_E					14.40
/*模式5、6过渡*/
#define TEMP_5_6_MODLE_RANGE_S					14.40
#define TEMP_5_6_MODLE_RANGE_E					15.50
/*模式6：30℃*/
#define TEMP_6_MODLE_RANGE_S					15.50
#define TEMP_6_MODLE_RANGE_E					22.00
/*
注意！！！！请输入浮点数。
普通升温模式
*/
/*模式1：1度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_1_ALARM_SOURCE_MAX				67.50	
/*报警温度下限时的单元实际温度*/		
#define TEMP_1_ALARM_SOURCE_MIN				54.00
/*模式2：3度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_2_ALARM_SOURCE_MAX				63.00
/*报警温度下限时的单元实际温度*/
#define TEMP_2_ALARM_SOURCE_MIN				51.00 
/*模式3：5度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_3_ALARM_SOURCE_MAX				60.00
/*报警温度下限时的单元实际温度*/
#define TEMP_3_ALARM_SOURCE_MIN				48.00
/*模式4：10度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_4_ALARM_SOURCE_MAX				58.50
/*报警温度下限时的单元实际温度*/
#define TEMP_4_ALARM_SOURCE_MIN				44.80
/*模式5：20度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_5_ALARM_SOURCE_MAX				48.50
/*报警温度下限时的单元实际温度*/
#define TEMP_5_ALARM_SOURCE_MIN				43.00
/*模式6：30度升温*/
/*报警温度上限时的单元实际温度*/
#define TEMP_6_ALARM_SOURCE_MAX				48.00
/*报警温度下限时的单元实际温度*/
#define TEMP_6_ALARM_SOURCE_MIN				42.50


/*差温模式*/
#ifdef TEMP_R
/*低温补偿起点*/
#define TEMP_LOW_START							5
/*低温补偿终点*/
#define TEMP_LOW_END							55
/*模式1：低温10度升温*/
/*参数未适配*/
/*报警温度上限时的单元实际温度*/
#define TEMP_LOW_1_ALARM_SOURCE_MAX				50.00
/*报警温度下限时的单元实际温度*/
#define TEMP_LOW_1_ALARM_SOURCE_MIN				43.00
/*模式2：低温20度升温*/
/*报警温度上限时的单元实际温度*/
#define  TEMP_LOW_2_ALARM_SOURCE_MAX			38.00
/*报警温度下限时的单元实际温度*/
#define  TEMP_LOW_2_ALARM_SOURCE_MIN			33.00
/*模式3：低温30度升温*/
/*报警温度上限时的单元实际温度*/
#define  TEMP_LOW_3_ALARM_SOURCE_MAX			38.00
/*报警温度下限时的单元实际温度*/
#define  TEMP_LOW_3_ALARM_SOURCE_MIN			33.00
#endif	//TEMP_R

#endif


//#ifdef LCCS_MODLE
//#define TEMP_SOURCE_255			255
//#define TEMP_SOURCE_245			245
//#define TEMP_SOURCE_235			235
//#define TEMP_SOURCE_225			225
//#define TEMP_SOURCE_215			215
//#define TEMP_SOURCE_205			205
//#define TEMP_SOURCE_195			195
//#define TEMP_SOURCE_185			185
//#define TEMP_SOURCE_175			175
//#define TEMP_SOURCE_165			165
//#define TEMP_SOURCE_155			155
//#define TEMP_SOURCE_145			145
//#define TEMP_SOURCE_135			135
//#define TEMP_SOURCE_125			125
//#define TEMP_SOURCE_115			115
//#define TEMP_SOURCE_105			105
//#define TEMP_SOURCE_95			95			
//#define TEMP_SOURCE_85			85
//#define TEMP_SOURCE_75			75
//#define TEMP_SOURCE_65			65
//#define TEMP_SOURCE_55			55
//#define TEMP_SOURCE_45			45
//#define TEMP_SOURCE_35			35
//#define TEMP_SOURCE_25			25
//#endif



/*PT100检测引脚*/
#define TEMP_AD_GPIO_PORT			GpioPortA
#define TEMP_AD_GPIO_PIN			GpioPin3
#define TEMP_AD_CH					3
/*NTC热敏检测引脚*/
#define TEMP_S_AD_GPIO_PORT			GpioPortA
#define TEMP_S_AD_GPIO_PIN			GpioPin2
#define TEMP_S_AD_CH				2
/*PT100供电引脚*/
#define TEMP_POWER_GPIO_PORT		GpioPortA
#define TEMP_POWER_GPIO_PIN			GpioPin8
/*NTC供电引脚*/
#define TEMP_S_POWER_GPIO_PORT		GpioPortA
#define TEMP_S_POWER_GPIO_PIN		GpioPin9


typedef struct
{
	uint32_t r:1;//R模式
	uint32_t s:1;//S模式
	uint32_t bk2:1;//博康模式2类
	uint32_t modle:6;//工作模式
	uint32_t offset:16;//偏移量
	uint32_t bit:7;//保留
}bsp_modle;



typedef struct
{
	uint32_t alarm:3;						//报警计数			 0~7
	uint32_t prepare_alarm:3;		//预警计数  0~7
	uint32_t fault:6;						//故障计数			 0~64
	uint32_t speed:5;						//速率检测计数		 0~32
	uint32_t bit:14;						//预留				
}bsp_count;

typedef struct
{
	uint8_t flag:1;
	uint8_t count:7;
}bsp_ntc;


typedef struct
{
	uint16_t start:1;							//低温模式启动位
	uint16_t reset:1;							//低温模式恢复启动位
	uint16_t rset_count:6;				//低温模式单次恢复检测周期计数
	uint16_t coincidence_count:5;	//低温模式恢复条件达成计数
	uint16_t a_start:1;						//中值滤波准备完成标志位
	uint16_t bit:2;
}bsp_low_modle;
	
typedef struct 
{
	float  						speed_rate; 	//温度变化率
	float 						source;				//温度实际值
	float							current;			//温度有效值
	uint16_t					prepare_alarm;//温度预警值
	uint16_t					alarm;				//温度报警值
}bsp_temp_data;


typedef struct
{
	uint8_t temp_start;
	uint8_t temp_end;
	uint8_t source_limit_max;
	uint8_t	source_limit_min;
}bsp_temp_alarm_confige;

typedef struct
{
	float 	magnification;
	uint16_t alarm;
	uint16_t prepare_alarm;
//	uint8_t air;
	uint8_t config_reset;
	uint8_t modle;
}bsp_eeprom_save_data;

typedef struct
{
	uint8_t low_start:1;				//低升温状态位	
	uint8_t alarm:1;						//报警状态位
	uint8_t prepare_alarm:1;		//预警状态位
	uint8_t fault:1;						//故障状态位
	uint8_t low_reset_start:1;  //低温模式恢复检测位
	uint8_t start:1;						//启动位
	uint8_t speed_cheek:1;			//速率检测启动位
	uint8_t first_start:1;			//初次上电位
}bsp_temp_flag;







extern volatile bsp_count count;


extern  volatile uint8_t temp_calibration_flag;

extern  volatile bsp_temp_data temp_data;
extern	volatile bsp_temp_flag temp_flag;
extern  volatile float temp_magnification;
extern volatile uint8_t temp_calibration_start_flag;
extern volatile uint16_t temp_low_reset_count;
extern volatile float increment_1;
extern volatile float increment_2; 
extern volatile float increment_3;
extern volatile unsigned char temp_speed_modle;

//extern const char modle_table_1[8][2];
//extern const char modle_table_2[3];
//extern const char modle_table_3[19];

extern volatile bsp_modle work;
/*低温模式*/
extern volatile bsp_low_modle low_temp;
extern volatile uint8_t        dev_clang;
extern volatile bsp_ntc ntc;


void bsp_Temp_Speed_Cheek(void);
void bsp_Temp_Modle_Confige(void);
void bsp_Temp_Recension(void);
void bsp_Temp_Low_Cheek(void);
float bsp_Algorithm_Test(float temp_old,float temp_new);
float bsp_Filtering_Alogorithm(float temp);
void bsp_Temp_Parameter_Config(void);
float Temp_AD_To_Temp_Source(uint16_t r_ad);
uint8_t bsp_PT100_Temp_Source_Get(float *temp_surroundings);
void bsp_Temp_Alarm_Change(uint16_t temp_alarm,uint16_t temp_prepare_alarm,uint8_t modle_ht);
float bsp_PT100_Calibration(float temp_srroundings,uint16_t r_ad);
void bsp_PT100_Algorithm_Calibration(void);
uint8_t bsp_PT100_Calibration_Temp_25(float surrounding_temp);
uint8_t bsp_Work_Modle_Change(uint8_t work_modle,uint16_t data0,uint16_t data1,uint8_t init_flag);
uint8_t bsp_PT100_Temp_Get(uint16_t *temp_source_ad,float *temp_source,float magnification);
float bsp_NTC_Temp_Get(void);
void test(void);

#ifdef LCCS_MODLE
void bsp_hight_temp_recension(void);
#endif

#endif //__BSP_TEMP_ALGORITHM_HUISON_H

